home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1997 May: Tool Chest / Dev.CD May 97 TC.toast / Sample Code / Text / SimpleText Sample / ThreeDMetafile.h < prev    next >
Encoding:
C/C++ Source or Header  |  1996-10-17  |  9.9 KB  |  239 lines  |  [TEXT/MPS ]

  1. /*
  2.     File:        ThreeDMetafile.h
  3.  
  4.     Contains:    3D viewer support for SimpleText
  5.  
  6.     Version:    GX 1.2 or later
  7.  
  8. ** Copyright 1994-1996 Apple Computer. All rights reserved.
  9. **
  10. **    You may incorporate this sample code into your applications without
  11. **    restriction, though the sample code has been provided "AS IS" and the
  12. **    responsibility for its operation is 100% yours.  However, what you are
  13. **    not permitted to do is to redistribute the source as "DSC Sample Code"
  14. **    after having made changes. If you're going to re-distribute the source,
  15. **    we require that you make it clear in the source that the code was
  16. **    descended from Apple Sample Code, but that you've made changes.
  17.  
  18. */
  19.  
  20.  
  21. #include "SimpleText.h"
  22.  
  23.  
  24. #define kThreeDWindowID    kThreeDBaseID
  25.  
  26.  
  27. #ifndef REZ
  28.     typedef long ViewerObject;
  29.  
  30.     struct ThreeDDataRecord
  31.         {
  32.         WindowDataRecord        w;
  33.         
  34.         ViewerObject            viewerObject;
  35.         };
  36.     typedef struct ThreeDDataRecord ThreeDDataRecord, *ThreeDDataPtr;    
  37.  
  38.     enum {
  39.         kQ3ViewerShowBadge             = 1<<0,
  40.         kQ3ViewerActive                = 1<<1,
  41.         kQ3ViewerControllerVisible    = 1<<2,
  42.         kQ3ViewerDrawFrame            = 1<<3,
  43.         kQ3ViewerDraggingOff        = 1<<4,
  44.         
  45.         kQ3ViewerButtonCamera        = 1<<5,
  46.         kQ3ViewerButtonTruck        = 1<<6,
  47.         kQ3ViewerButtonOrbit        = 1<<7,
  48.         kQ3ViewerButtonZoom            = 1<<8,
  49.         kQ3ViewerButtonDolly        = 1<<9,
  50.         
  51.     
  52.         kQ3ViewerDefault = (
  53.                     kQ3ViewerActive        | kQ3ViewerControllerVisible | 
  54.                     kQ3ViewerButtonCamera  | kQ3ViewerButtonTruck       | 
  55.                     kQ3ViewerButtonOrbit   | kQ3ViewerButtonDolly )
  56.     };
  57.  
  58.     enum {
  59.         uppViewerLibNewProcInfo = kCStackBased
  60.              | RESULT_SIZE(SIZE_CODE(sizeof(Ptr)))
  61.              | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(CGrafPtr)))
  62.              | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(Rect*)))
  63.              | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(long))),
  64.         uppViewerLibDisposeProcInfo = kCStackBased
  65.              | RESULT_SIZE(SIZE_CODE(sizeof(OSErr)))
  66.              | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(Ptr))),
  67.  
  68.         uppViewerLibUseFileProcInfo = kCStackBased
  69.              | RESULT_SIZE(SIZE_CODE(sizeof(OSErr)))
  70.              | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ViewerObject)))
  71.              | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long))),
  72.         uppViewerLibUseDataProcInfo = kCStackBased
  73.              | RESULT_SIZE(SIZE_CODE(sizeof(OSErr)))
  74.              | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ViewerObject)))
  75.              | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(void*)))
  76.              | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(long))),
  77.  
  78.         uppViewerLibWriteFileProcInfo = kCStackBased
  79.              | RESULT_SIZE(SIZE_CODE(sizeof(OSErr)))
  80.              | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ViewerObject)))
  81.              | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long))),
  82.         uppViewerLibWriteDataProcInfo = kCStackBased
  83.              | RESULT_SIZE(SIZE_CODE(sizeof(unsigned long)))
  84.              | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ViewerObject)))
  85.              | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(void**))),
  86.  
  87.         uppViewerLibDrawProcInfo = kCStackBased
  88.              | RESULT_SIZE(SIZE_CODE(sizeof(OSErr)))
  89.              | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ViewerObject))),
  90.  
  91.         uppViewerLibGetPictProcInfo = kCStackBased
  92.              | RESULT_SIZE(SIZE_CODE(sizeof(PicHandle)))
  93.              | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ViewerObject))),
  94.         uppViewerLibGetButtonRectProcInfo = kCStackBased
  95.              | RESULT_SIZE(SIZE_CODE(sizeof(OSErr)))
  96.              | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ViewerObject)))
  97.              | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(unsigned long)))
  98.              | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(Rect*))),
  99.  
  100.         uppViewerLibGetDimensionProcInfo = kCStackBased
  101.              | RESULT_SIZE(SIZE_CODE(sizeof(OSErr)))
  102.              | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ViewerObject)))
  103.              | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long*)))
  104.              | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(long*))),
  105.  
  106.         uppViewerLibSetFlagsProcInfo = kCStackBased
  107.              | RESULT_SIZE(SIZE_CODE(sizeof(OSErr)))
  108.              | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ViewerObject)))
  109.              | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(unsigned long))),
  110.         uppViewerLibGetFlagsProcInfo = kCStackBased
  111.              | RESULT_SIZE(SIZE_CODE(sizeof(unsigned long)))
  112.              | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ViewerObject))),
  113.  
  114.         uppViewerLibSetBoundsProcInfo = kCStackBased
  115.              | RESULT_SIZE(SIZE_CODE(sizeof(OSErr)))
  116.              | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ViewerObject)))
  117.              | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(Rect*))),
  118.         uppViewerLibGetBoundsProcInfo = kCStackBased
  119.              | RESULT_SIZE(SIZE_CODE(sizeof(OSErr)))
  120.              | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ViewerObject)))
  121.              | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(Rect*))),
  122.  
  123.         uppViewerLibSetPortProcInfo = kCStackBased
  124.              | RESULT_SIZE(SIZE_CODE(sizeof(OSErr)))
  125.              | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ViewerObject)))
  126.              | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(CGrafPtr))),
  127.         uppViewerLibGetPortProcInfo = kCStackBased
  128.              | RESULT_SIZE(SIZE_CODE(sizeof(CGrafPtr)))
  129.              | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ViewerObject))),
  130.  
  131.         uppViewerLibEventProcInfo = kCStackBased
  132.              | RESULT_SIZE(SIZE_CODE(sizeof(Boolean)))
  133.              | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ViewerObject)))
  134.              | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(EventRecord*))),
  135.         uppViewerLibAdjustCursorProcInfo = kCStackBased
  136.              | RESULT_SIZE(SIZE_CODE(sizeof(Boolean)))
  137.              | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ViewerObject)))
  138.              | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(Point*))),
  139.  
  140.         uppViewerLibGetStateProcInfo = kCStackBased
  141.              | RESULT_SIZE(SIZE_CODE(sizeof(unsigned long)))
  142.              | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ViewerObject))),
  143.  
  144.         uppViewerLibClearProcInfo = kCStackBased
  145.              | RESULT_SIZE(SIZE_CODE(sizeof(OSErr)))
  146.              | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ViewerObject))),
  147.         uppViewerLibCutProcInfo = kCStackBased
  148.              | RESULT_SIZE(SIZE_CODE(sizeof(OSErr)))
  149.              | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ViewerObject))),
  150.         uppViewerLibCopyProcInfo = kCStackBased
  151.              | RESULT_SIZE(SIZE_CODE(sizeof(OSErr)))
  152.              | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ViewerObject))),
  153.         uppViewerLibPasteProcInfo = kCStackBased
  154.              | RESULT_SIZE(SIZE_CODE(sizeof(OSErr)))
  155.              | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ViewerObject)))
  156.  
  157.         };
  158.         
  159.     // Proc pointer typedefs
  160.     typedef ViewerObject (*ViewerLib_NewType) (CGrafPtr port,  Rect *rect,  unsigned long flags);
  161.     typedef OSErr (*ViewerLib_DisposeType) (ViewerObject theViewer);
  162.  
  163.     typedef OSErr (*ViewerLib_UseFileType) (ViewerObject theViewer, long refNum);
  164.     typedef OSErr (*ViewerLib_UseDataType)  (ViewerObject theViewer, void *data, long size);
  165.  
  166.     typedef OSErr (*ViewerLib_WriteFileType) (ViewerObject theViewer, long refNum);
  167.     typedef unsigned long (*ViewerLib_WriteDataType)  (ViewerObject theViewer, void **data);
  168.  
  169.     typedef OSErr (*ViewerLib_DrawType) (ViewerObject theViewer);
  170.  
  171.     typedef PicHandle (*ViewerLib_GetPictType) (ViewerObject theViewer);
  172.     typedef OSErr     (*ViewerLib_GetButtonRectType) (ViewerObject theViewer, unsigned long button, Rect *rect);
  173.  
  174.     typedef OSErr (*ViewerLib_GetDimensionType) (ViewerObject theViewer, long *width, long* height);
  175.     
  176.     typedef OSErr (*ViewerLib_SetFlagsType) (ViewerObject theViewer, unsigned long flags);
  177.     typedef unsigned long (*ViewerLib_GetFlagsType) (ViewerObject theViewer);
  178.  
  179.     typedef OSErr (*ViewerLib_SetBoundsType) (ViewerObject theViewer, Rect *bounds);
  180.     typedef OSErr (*ViewerLib_GetBoundsType) (ViewerObject theViewer, Rect *bounds);
  181.  
  182.     typedef OSErr (*ViewerLib_SetPortType) (ViewerObject theViewer, CGrafPtr port);
  183.     typedef CGrafPtr (*ViewerLib_GetPortType) (ViewerObject theViewer);
  184.  
  185.     typedef Boolean (*ViewerLib_EventType) (ViewerObject theViewer, EventRecord *evt);
  186.     typedef Boolean (*ViewerLib_AdjustCursorType) (ViewerObject theViewer, Point *pt);
  187.  
  188.     typedef unsigned long (*ViewerLib_GetStateType) (ViewerObject theViewer);
  189.  
  190.     typedef OSErr (*ViewerLib_ClearType) (ViewerObject theViewer);
  191.     typedef OSErr (*ViewerLib_CutType) (ViewerObject theViewer);
  192.     typedef OSErr (*ViewerLib_CopyType) (ViewerObject theViewer);
  193.     typedef OSErr (*ViewerLib_PasteType) (ViewerObject theViewer);
  194.  
  195.  
  196.     typedef struct
  197.         {
  198.         ProcInfoType        info;
  199.         void                *entry;
  200.         } GlobalEntry;
  201.         
  202.     // Macro calls
  203.     #define ViewerLib_New(A,B,C) (*(ViewerLib_NewType)(gProcPointers[0].entry)) (A, B, C)
  204.     #define ViewerLib_Dispose(A) (*(ViewerLib_DisposeType)(gProcPointers[1].entry)) (A)
  205.     
  206.     #define ViewerLib_UseFile(A,B) (*(ViewerLib_UseFileType)(gProcPointers[2].entry)) (A, B)
  207.     #define ViewerLib_UseData(A,B,C) (*(ViewerLib_UseDataType)(gProcPointers[3].entry)) (A, B, C)
  208.  
  209.     #define ViewerLib_WriteFile(A,B) (*(ViewerLib_WriteFileType)(gProcPointers[4].entry)) (A, B)
  210.     #define ViewerLib_WriteData(A,B) (*(ViewerLib_WriteDataType)(gProcPointers[5].entry)) (A, B)
  211.     
  212.     #define ViewerLib_Draw(A) (*(ViewerLib_DrawType)(gProcPointers[6].entry)) (A)
  213.  
  214.     #define ViewerLib_GetPict(A) (*(ViewerLib_GetPictType)(gProcPointers[7].entry)) (A)
  215.     #define ViewerLib_GetButtonRect(A,B,C) (*(ViewerLib_GetButtonRectType)(gProcPointers[8].entry)) (A,B,C)
  216.  
  217.     #define ViewerLib_GetDimension(A,B,C) (*(ViewerLib_GetDimensionType)(gProcPointers[9].entry)) (A,B,C)
  218.     
  219.     #define ViewerLib_SetFlags(A,B) (*(ViewerLib_SetFlagsType)(gProcPointers[10].entry)) (A, B)
  220.     #define ViewerLib_GetFlags(A) (*(ViewerLib_GetFlagsType)(gProcPointers[11].entry)) (A)
  221.  
  222.     #define ViewerLib_SetBounds(A,B) (*(ViewerLib_SetBoundsType)(gProcPointers[12].entry)) (A, B)
  223.     #define ViewerLib_GetBounds(A,B) (*(ViewerLib_GetBoundsType)(gProcPointers[13].entry)) (A, B)
  224.  
  225.     #define ViewerLib_SetPort(A,B) (*(ViewerLib_SetPortType)(gProcPointers[14].entry)) (A, B)
  226.     #define ViewerLib_GetPort(A) (*(ViewerLib_GetPortType)(gProcPointers[15].entry)) (A)
  227.  
  228.     #define ViewerLib_Event(A,B) (*(ViewerLib_EventType)(gProcPointers[16].entry)) (A, B)
  229.     #define ViewerLib_AdjustCursor(A,B) (*(ViewerLib_AdjustCursorType)(gProcPointers[17].entry)) (A, B)
  230.  
  231.     #define ViewerLib_GetState(A) (*(ViewerLib_GetStateType)(gProcPointers[18].entry)) (A)
  232.  
  233.     #define ViewerLib_Clear(A) (*(ViewerLib_ClearType)(gProcPointers[19].entry)) (A)
  234.     #define ViewerLib_Cut(A) (*(ViewerLib_CutType)(gProcPointers[20].entry)) (A)
  235.     #define ViewerLib_Copy(A) (*(ViewerLib_CopyType)(gProcPointers[21].entry)) (A)
  236.     #define ViewerLib_Paste(A) (*(ViewerLib_PasteType)(gProcPointers[22].entry)) (A)
  237.  
  238. #endif
  239.